from settings import db

# 定义User模型，映射到数据库中的用户表
class User(db.Model):
    """用户模型，用于存储用户信息"""
    id = db.Column(db.Integer, primary_key=True)             # 主键
    username = db.Column(db.String(80), unique=True, nullable=False)  # 用户名，唯一且不能为空
    email = db.Column(db.String(120), unique=True, nullable=False)   # 电子邮件地址，唯一且不能为空
    password_hash = db.Column(db.String(128), nullable=False)         # 用户密码的散列值，不能为空

    # 定义模型的字符串表示
    def __repr__(self):
        return f'<User {self.username}>'

# 定义House模型，映射到数据库中的房屋表
class House(db.Model):
    __tablename__ = 'house_info'
    """房屋模型，用于存储房屋信息"""

    # 主键
    id = db.Column(db.Integer, primary_key=True)

    # 房屋标题，不能为空
    title = db.Column(db.String(100), nullable=False)

    # 房间数量，不能为空
    rooms = db.Column(db.String(100), nullable=False)

    # 房屋面积，不能为空
    area = db.Column(db.String, nullable=False)

    # 房屋价格，不能为空
    price = db.Column(db.String(100), nullable=False)

    # 房屋朝向，不能为空
    direction = db.Column(db.String(100), nullable=False)

    # 租赁类型，不能为空
    rent_type = db.Column(db.String(100), nullable=False)

    # 区域，不能为空
    region = db.Column(db.String(100), nullable=False)

    # 小区，不能为空
    block = db.Column(db.String(100), nullable=False)

    # 房屋地址，不能为空
    address = db.Column(db.String(200), nullable=False)

    # 交通情况，不能为空
    traffic = db.Column(db.String(100), nullable=False)

    # 发布时间，不能为空
    publish_time = db.Column(db.Integer, nullable=False)

    # 设施，不能为空
    facilities = db.Column(db.Text, nullable=False)

    # 房屋亮点，不能为空
    highlights = db.Column(db.Text, nullable=False)

    # 配套设施，不能为空
    matching = db.Column(db.Text, nullable=False)

    # 附近旅游景点，不能为空
    travel = db.Column(db.Text, nullable=False)

    # 浏览次数，不能为空
    page_views = db.Column(db.Integer, nullable=False)

    # 房东姓名，不能为空
    landlord = db.Column(db.String(30), nullable=False)

    # 联系电话，不能为空
    phone_num = db.Column(db.String(100), nullable=False)

    # 房屋编号，不能为空
    house_num = db.Column(db.String(100), nullable=False)

    # 定义模型的字符串表示
    def __repr__(self):
        return 'House :%s,%s' % (self.address, self.id)
